package com.tiancheng.onecode.model.request.admin;

import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * @Author: kellen
 * @Description: 添加商户请求
 * @Date: create in 2024/12/9 21:32
 */
@Data
public class MerchantAddReq implements Serializable {
    /**
     * 平台编码
     */
    @NotNull(message = "平台编码不能为空")
    private String platformCode;
    /**
     * 商户类型：1-企业商户、2-个体商户、3-小微商户
     */
    @NotNull(message = "商户类型不能为空")
    private Integer merchantType;
    /**
     * 商户名称
     */
    @NotBlank(message = "商户名称不能为空")
    private String merchantName;
    /**
     * 社会信用统一代码:小微商户传法人身份证号
     */
    @NotBlank(message = "社会信用代码不能为空（小微商户传法人身份证）")
    @Size(min = 1,max = 32,message = "社会信用统一代码最长32位")
    private String shopLic;

    /**
     * 营业省份id
     */
    @NotBlank(message = "营业省份id不能为空")
    @Size(min = 1,max = 11,message = "营业省份id最长11位")
    private String shopProvinceId;
    /**
     * 营业市id
     */
    @NotBlank(message = "营业市id不能为空")
    @Size(min = 1,max = 11,message = "营业市id最长11位")
    private String shopCityId;
    /**
     * 营业区id
     */
    @NotBlank(message = "营业区id不能为空")
    @Size(min = 1,max = 11,message = "营业区id最长11位")
    private String shopCountryId;
    /**
     * 营业地址
     */
    @NotBlank(message = "营业地址不能为空")
    @Size(min = 5,max = 128,message = "营业地址最少5个字符，最长128字符")
    private String shopAddress;
    /**
     * 营业执照有效期-开始
     */
    private String shopLicenseBeginDate;
    /**
     * 营业执照有效期-结束
     */
    private String shopLicenseEndDate;
    /**
     * 法人身份证姓名
     */
    @NotBlank(message = "法人姓名不能为空")
    private String legalName;
    /**
     * 法人身份证号
     */
    @NotBlank(message = "法人身份证不能为空")
    @Size(min = 1,max = 32,message = "法人身份证号最长32位")
    private String legalIdcardNo;
    /**
     * 法人性别
     * 1-男性
     * 2-女性
     */
    @NotNull(message = "法人性别不能为空")
    private Integer  legalSex;
    /**
     * 法人手机号
     */
    @NotBlank(message = "联系电话不能为空")
    @Size(min = 1,max = 13,message = "法人手机号最长13位")
    private String legalMobile;
    /**
     * 法人证件开始日期:yyyy-MM-dd
     */
    @NotBlank(message = "法人证件开始日期不能为空")
    private String legalCardBeginDate;
    /**
     * 法人证件截止日期:yyyy-MM-dd
     */
    @NotBlank(message = "法人证件结束日期不能为空")
    private String legalCardDeadline;
    /**
     * 法人住址
     */
    private String legalAddress;
    /**
     * 营业执照
     */
    private String businessLicense;
    /**
     * 法人身份证-正面
     */
    @NotBlank(message = "法人/负责人法人身份证-正面必须上传！")
    private String idCardPositive;
    /**
     * 法人身份证-背面
     */
    @NotBlank(message = "法人/负责人法人身份证-背面必须上传！")
    private String idCardBack;
    /**
     * 法人职业
     * 0-各类专业、技术人员
     * 1-国家机关、党群组织、企事业单位的负责人
     * 2-办事人员和有关人员
     * 3-商业工作人员
     * 4-服务性工作人员
     * 5-农林牧渔劳动者
     * 6-生产工作、运输工作和部分体力劳动者
     * 7-不便分类的其他劳动者
     */
    private Integer legalOccupation=0;
    /**
     * 行业类别编码
     */
    private String mccCode;


    // ------------------------------------------------ 第二步 添加管理员信息
    /**
     * 经营项目简述（营业类目描述）
     */
    @NotBlank(message = "经营项目简述不能为空")
    private String shopBusiness;
    /**
     * 管理员用户id
     */
    @NotNull(message = "管理员用户id不能为空")
    private String userId;
    /**
     * 管理员用户名
     */
    private String merchantUserName;
    /**
     * 管理员手机号码
     */
    private String phone;
    /**
     * 管理员logoUrl
     */
    private String logoUrl;

    // ------------------------------------------------ 第三步 添加结算信息
    /**
     * 开户行行号
     */
    @NotBlank(message = "开户行行号不能为空")
    @Size(min = 1,max = 18,message = "开户行行号最长18位")
    private String bankNo;
    /**
     * 开户行帐号
     */
    @NotBlank(message = "开户行帐号不能为空")
    @Size(min = 1,max = 40,message = "开户行帐号最长40位")
    private String bankAcctNo;
    /**
     * 开户行账号名称
     */
    @NotBlank(message = "开户行账号名称不能为空，对公账户填写公司名称，需与营业执照名称保持一致！")
    private String bankAcctName;
    /**
     * 银行预留手机号
     */
    @NotBlank(message = "银行预留手机号不能为空")
    @Size(min = 1,max = 32,message = "银行预留手机号最长32位")
    private String bankAcctPhone;
    /**
     * 开户行银行卡正面
     */
    @NotBlank(message = "开户行银行卡正面照不能为空")
    private String bankCardPositiveUrl;
    /**
     * 开户行银行卡背面
     */
    @NotBlank(message = "开户行银行卡背面照不能为空")
    private String bankCardBackUrl;
    /**
     * 开户许可证
     */
    private String accountOpeningLicense;
    /**
     * 辅助材料
     */
    private String auxiliaryMaterialsImg;
    /**
     * 辅助材料1
     */
    private String auxiliaryMaterialsImg1;
    // ------------------------------------------结算信息------------------------------------------
    /**
     * 平台分佣百分比值
     */
    //@NotNull(message = "抽佣金额不能为空")
    private BigDecimal platformPercent;
//    /**
//     * 清分周期类型：T=按日（如T+1），M=按月固定日（如每月10日）
//     **/
//    @NotNull(message = "清分周期类型不能为空")
//    private String cycleType;
//    /**
//     * 清分周期值，cycle_type为T，cycle_value为1时代表T+1清分
//     */
//    @NotNull(message = "清分周期值不能为空")
//    private Integer cycleValue;
//    /**
//     * 备注
//     */
//    private String clearRemark;

    /**
     * 用户中心的token
     */
    private String XToken;

    /**
     * 网站截图、APP截图
     */
    private String websiteImg;
}
